﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp11
{
//    一、编写一个控制台应用程序，接受用户输入的两个整数和一个操作符，以实现对两个整数的加、减、乘、除运算，并显示出计算结果。

//1、创建Calculate积累，其中包含两个整型的protected成员，用以接收用户输入的两个整数。定义一个DisplayResult()虚方法，计算并输出结果。
//2、定义四个类继承自Calculate类，分别重写DisplayResult()方法，实现两个整数的加、减、乘、除运算，并输出结果。
//3、根据用户输入的操作符，实例化相应的类，完成运算并输出结果。
//4、在主类中添加一个方法，形参为父类对象，根据传递实参的类型，调用方法，实现计算和显示结果。
    class Program
    {
        static void Main(string[] args)
        {
            lo:while (true)
            {
                Console.WriteLine("请输入第一个数：");
                int num1 = int.Parse(Console.ReadLine());
                Console.WriteLine("请输入第二个数：");
                int num2 = int.Parse(Console.ReadLine());
                Console.WriteLine("请输入操作符：");
                char a = char.Parse(Console.ReadLine());
                Calculate Calculate;
                switch (a)
                {
                    case '+':
                        Calculate = new Plus(num1, num2);
                        break;
                    case '-':
                        Calculate = new Mins(num1, num2);
                        break;
                    case '*':
                        Calculate = new Multiply(num1, num2);
                        break;
                    case '/':
                        Calculate = new Divide(num1, num2);
                        break;
                    default:
                        Console.WriteLine("操作符输入有误，请重新输入！");
                        goto lo;
                }
                Console.Write("您输入的第一个数{0}，第二个数为{1}，操作符为{2},", num1, num2, a);
                Calc(Calculate);
            }
        }
        public static void Calc(Calculate calculate)
        {
            calculate.DisplayResult();
        }
    }
}
